Computer applications have become ubiquitous, and their continued operation demands attention to efficiency. In such an environment, applications exchanging data perform data intensive operations and system calls. For example, each time an application shifts from a user mode operation to one performed in kernel mode, the system saves the user mode context, that is, the current state and settings are written to a memory, the kernel operation is performed, and the context is restored. These data intensive operations and system calls consume overhead in terms of data read and write operations. In turn, increased user mode—kernel mode boundary crossing events result in a corresponding increase in context switches from user mode to kernel mode, creating performance overhead, which in turn boosts consumption of CPU cycles and reduces overall processing speed.
Contemporary technologies describe a number of proposed solutions to reduce system overhead by reducing the number of context switches. For example, one such technique calls for clustering system calls. In this approach, execution profiles of program segments are used to identify groups of system calls that can be replaced by a single call implementing their basic functionality, thereby reducing number of user mode—kernel mode boundary crossings. The clustering of system calls drastically reduces the total number of system calls and the cost associated for processing each system call by reducing the number of context switches required while crossing the user mode—kernel mode boundary. These approaches are limited, however, only allowing clustering of system calls having similar execution profiles.
Without a method and system that can reduce system overhead due to data intensive operations the promise of this technology may never be fully achieved.